package com.stu.day05;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

/**
 * 创建对象LocalDateTime ldt = LocalDateTime.now()
 * 指定时间LocalDateTime sdt = LocalDateTime.of(2025, 1, 15, 10, 30)
 * 获取年ldt.getYear()
 * 格式化DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")
 * 从字符串解析LocalDateTime.parse
 *
 * @author zy
 * @date 2025/1/27 15:55
 */
public class LocalDateTimeDemo {
    public static void main(String[] args) {
        LocalDate ld = LocalDate.now();   //LocalDate.now()返回LocalDate类型对象
//        System.out.println(ld);  // 2025-01-27
        LocalTime lt = LocalTime.now();
//        System.out.println(lt);  // 16:00:11.314276400
        LocalDateTime ldt = LocalDateTime.now();
//        System.out.println(ldt);  // 2025-01-27T16:00:11.314276400

        LocalDateTime myldt = LocalDateTime.of(2025,2,5,15,55);
//        System.out.println(myldt.getYear());  // 2025
//        System.out.println(myldt.getMonthValue());  // 2
//        System.out.println(myldt.getDayOfYear());  // 36 这一年的第几天

        //1.LocalDateTime转化成String
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");   //格式对象
        String s1 = dtf.format(myldt);    //字符串接收,dtf为格式对象,ldf为日期对象
        System.out.println(s1);

        //2.String转化成LocalDateTime对象
        String s2 = "2025-01-01 11:22:33";
        LocalDateTime ldt2 = LocalDateTime.parse(s2, dtf);   // ldf2为用来接收字符串的日期对象,dtf为格式对象
        LocalDateTime ldt3 = LocalDateTime.parse("2025-01-01T11:22:33");  // 必须有T,用来分割时间与日期
        System.out.println("A: "+ldt2);  // A: 2025-01-01T11:22:33
        System.out.println("B: "+ldt3);  // B: 2025-01-01T11:22:33


        // LocalDateTime 是不可变的，所以它提供了返回修改后副本的方法，而不会改变原对象。
        LocalTime time = LocalTime.of(15,55);
        LocalTime t2 = time.withHour(11);//利用with开头的,修改指定的字段
        System.out.println(t2);  // 11:55

        // plusXxx 和 minusXxx 系列方法用于增加或减少日期时间中的字段。例如：增加天数、小时、月等。
        LocalDateTime dateTime = LocalDateTime.of(2025, 1, 27, 14, 30);
        LocalDateTime newDateTime1 = dateTime.plusDays(5); // 增加5天
        LocalDateTime newDateTime2 = dateTime.minusHours(3); // 减去3小时
        System.out.println(newDateTime1);  // 2025-02-01T14:30
        System.out.println(newDateTime2);  // 2025-01-27T11:30

        LocalDate d1 = LocalDate.of(2025,1,12);
        LocalDate d2 = LocalDate.now();
//        System.out.println(ChronoUnit.DAYS.between(d2,d1));   //两个日期相差的天数
//        System.out.println(d1.isAfter(d2));   //判断日期前后,true
//        System.out.println(d1.isLeapYear());  //false
    }
}
